package com.wenlin.myproduction.util;

import android.widget.ImageView;
import android.widget.TextView;

import com.wenlin.myproduction.R;
import com.wenlin.myproduction.widget.RoundBlueProgressBar;

/**
 * @author: 文琳
 * @time: 2020/4/7 22:44
 * @desc: 农场相关的工具类
 */
public class FarmUtil {

    /**
     * 获取等待时间中最小的那个
     *
     * @param waitTimes 等待时间的数组
     * @return 所求
     */
    public static int getMinWaitTimeOfPlants(int[] waitTimes) {
        int min = Integer.MAX_VALUE;//初始化的时候设置最大值
        if (Checker.notNull(waitTimes) && waitTimes.length > 0) {
            for (int waitTime : waitTimes) {
                if (waitTime > 0 && min > waitTime) {
                    min = waitTime;
                }
            }
        }
        return min == Integer.MAX_VALUE ? 0 : min;//返回的时候如果是最大值却要返回0
    }

    /**
     * 通过两个数组：到成熟需要等待的时间的数组和到失去保护罩需要等待的时间的数组来计算需要设置倒计时的最小时间
     *
     * @param waitTimesToBig           作物到成熟需要等待的时间的数组
     * @param waitTimesToLoseProtected 作物到失去保护罩需要等待的时间的数组
     * @return 所求
     */
    public static int getMinWaitTimeWithToBigAndToLoseProtected(int[] waitTimesToBig, int[] waitTimesToLoseProtected) {
        int minWaitTime;
        int minWaitTimeToBig = getMinWaitTimeOfPlants(waitTimesToBig);
        int minWaitTimeToLoseProtected = getMinWaitTimeOfPlants(waitTimesToLoseProtected);
//        if (minWaitTimeToBig > 0 && minWaitTimeToLoseProtected == 0) minWaitTime = minWaitTimeToBig;
//        else if (minWaitTimeToBig == 0 && minWaitTimeToLoseProtected > 0) minWaitTime = minWaitTimeToLoseProtected;
//        else minWaitTime = Math.min(minWaitTimeToBig, minWaitTimeToLoseProtected);//还剩两种情况：两者都为0，两者都不为0
        minWaitTime = Math.min(minWaitTimeToBig, minWaitTimeToLoseProtected);//使用新方法两行即可替换上面的三行代码
        if (minWaitTime == 0) minWaitTime = Math.max(minWaitTimeToBig, minWaitTimeToLoseProtected);
        return minWaitTime;
    }

    /**
     * 返回是否是句子
     *
     * @param text 文本
     * @return 所求
     */
    public static boolean isSentence(String text) {
        if (Checker.hasNoWord(text)) return false;
        return text.trim().contains(" ");
    }

    /**
     * 根据plantId获取播种的作物成熟的图片资源编号
     *
     * @param plantId 作物编号
     * @return 所求
     */
    public static int getPlantBigImageRes(int plantId) {
        return ValCommon.FARM_FRUIT_BIG_PIC_RES_ID[plantId % ValCommon.FARM_FRUIT_BIG_PIC_RES_ID.length];
    }

    /**
     * 显示页面底下的按钮文字
     */
    public static void updateHelpCountUI(TextView tvTips) {
        int helpCount = UserManage.getInstance().getHelpCount();
        UI.setText(tvTips, "x" + helpCount);
    }

    /**
     * 显示页面底下的按钮文字
     */
    public static void updateHelpCountUIWithAnim(TextView tvTips) {
        int helpCount = UserManage.getInstance().getHelpCount();
        UI.setText(tvTips, "x" + helpCount);
        AnimUtil.tada(tvTips, 2);
    }

    /**
     * 返回金币应该乘以的倍数
     *
     * @param content 内容
     * @return 所求
     */
    public static int getEarnCoinMultiple(String content) {
        if (Checker.hasNoWord(content)) return 1;
//        content = content.replace(" ", "");//去除所有的空格，这句加不加都行
        String englishWord = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";//字母大小写各26个
        int t = 0;
        for (int i = 0; i < content.length(); i++) {
            char character = content.charAt(i);
            if (englishWord.contains(Character.toString(character)))
                t++;
        }
        return t >= ValCommon.MIN_PLANT_CONTENT_LENGTH_TO_GET_MORE_COIN ? 3 : 1;//因为取名方便所以是21，规则是≤20是1倍，大于20是3倍
    }

    /**
     * 更新小车的UI，如果满了则播放动画
     *
     * @param progressBar 进度条控件
     * @param tvProgress  显示进度的控件
     * @param plants      已经放入车中的农作物数量
     */
    public static void updateCarUI(RoundBlueProgressBar progressBar, ImageView ivLeft, ImageView ivRight, TextView tvProgress, int plants) {
        int progress = plants % ValCommon.FULL_CAR_WITH_PLANTS;
        UI.setProgress(progressBar, progress * 100 / ValCommon.FULL_CAR_WITH_PLANTS);
        UI.startShowAnimate(progressBar);
        if (progress > 0) {
            UI.setImageResource(ivLeft, R.mipmap.farm_icon_car_full);
            UI.setText(tvProgress, "再获得" + (ValCommon.FULL_CAR_WITH_PLANTS - progress) + "个作物可获得一把铲子");
        } else {
            AnimUtil.transToLeft(ivLeft, ivRight, tvProgress, progressBar);
        }
//        if (progress == 0) {
//            EventBus.getDefault().post(new Event.GetUserInfoEvent());//重新获取用户数据，然后更新帮学次数
//        }
    }

    /**
     * 初始化小车的UI，不会播放动画
     *
     * @param progressBar 进度条控件
     * @param tvProgress  显示进度的控件
     * @param plants      已经放入车中的农作物数量
     */
    public static void initCarUI(RoundBlueProgressBar progressBar, ImageView ivCar, TextView tvProgress, int plants) {
        int progress = plants % ValCommon.FULL_CAR_WITH_PLANTS;
        if (progress > 0) UI.setImageResource(ivCar, R.mipmap.farm_icon_car_full);
        UI.setProgress(progressBar, progress * 100 / ValCommon.FULL_CAR_WITH_PLANTS);
        UI.setText(tvProgress, "再获得" + (ValCommon.FULL_CAR_WITH_PLANTS - progress) + "个作物可获得一把铲子");
    }


}
